package com.letou.ls.view;

import java.util.ArrayList;
import java.util.Arrays;

import org.apache.table.TableTitle;
import org.apache.table.TableUtil;

import com.letou.ls.uitl.Logger;

import android.content.Context;

public class TableViewUtil {
    
    private static String[] majiangTitleArray = {"一", "二", "三", "四", "五", "六", "七", "八", "九", "春",
            "夏", "秋", "冬", "东", "西", "南", "北", "中", "发", "白"};
    
    public static TableTitle getHappy10Table(Context context, int screenWidth) {
        ArrayList<ArrayList<ArrayList<String>>> titleList =
                new ArrayList<ArrayList<ArrayList<String>>>();
        ArrayList<ArrayList<ArrayList<String>>> data =
                new ArrayList<ArrayList<ArrayList<String>>>();
        ArrayList<ArrayList<String>> item;
        item = new ArrayList<ArrayList<String>>();
        // title 1大字号 , 2 小字号 , 3 红色右侧线 ,4 黄色右侧线 , 5大号 红色线,6 小号红色线
        addCol("期号", 5, item);
        
        addCol("前三组", 3, item);
        addCol("前三组", 3, item);
        addCol("前三组", 3, item);
        int size = 20;
        for (int index = 0; index < size; index++) {
            
            if (index == size - 1) {
                addCol("开奖号码分布", 3, item);
                // } else if (index == 9) {
                // addCol("开奖号码分布", 0, item);
            } else {
                addCol("开奖号码分布", 0, item);
            }
        }
        addCol("跨度", 0, item);
        addCol("和数", 0, item);
        addCol("大小比", 2, item);
        addCol("奇偶比", 6, item);
        titleList.add(item);
        
        item = new ArrayList<ArrayList<String>>();
        
        addCol("期号", 5, item);
        
        addCol("1", 3, item);
        addCol("2", 3, item);
        addCol("3", 3, item);
        for (int index = 0; index < size; index++) {
            if (index == size - 1) {
                addCol("" + (index + 1), 3, item);
            } else if (index == 9) {
                addCol("" + (index + 1), 4, item);
            } else {
                addCol("" + (index + 1), 0, item);
            }
        }
        
        addCol("跨度", 0, item);
        addCol("和数", 0, item);
        addCol("大小比", 2, item);
        addCol("奇偶比", 6, item);
        titleList.add(item);
        
        TableTitle title = TableUtil.changeTitle(titleList);
        // title.toShow(title.getDataCol());
        
        ArrayList<ArrayList<String>> itemList = new ArrayList<ArrayList<String>>();
        
        addCol("888888", 0, itemList);// 1
        addCol("20", 2, itemList);// 2
        addCol("20", 2, itemList);// 3
        addCol("20", 2, itemList);// 4
        for (int index = 0; index < size; index++) {
            addCol("" + index + 1, 0, itemList);// 25
        }
        
        addCol("88", 3, itemList);// 25
        addCol("888", 3, itemList);// 26
        addCol("8:8", 3, itemList);// 27
        addCol("8:8", 3, itemList);// 28
        data.add(itemList);
        
        TableUtil.getTableTitleByWidth(title, data, context, screenWidth, 16);
        
        // for(float f:mDataWidth){
        //
        // }
        // title.getDataCol().setmDataWidth(mDataWidth)
        return title;
    }
    
    /**
     * type 0 没有 1 字体变红,2 字体变红 底色为蓝 ,3 底色变蓝 4 底色变灰,5 字变灰底色也变灰
     *
     * title 1大字号 , 2 小字号 , 3 红色右侧线 ,4 黄色右侧线 , 5大号 红色线,6 小号红色线 ,7 蓝色,8极小,9极小 红
     *
     * @param text
     * @param type
     * @param array
     */
    
    public static void addCol(String text, int type, ArrayList<ArrayList<String>> array) {
        ArrayList<String> item = new ArrayList<String>();
        item.add(text);
        if (type > 0) {
            item.add(String.valueOf(type));
        }
        array.add(item);
    }
    
    /**
     * 转化数据
     *
     * @param topArray
     * @param allArray
     * @param array
     * @param size
     */
    public static void getDataArray(int number, int stye, ArrayList<ArrayList<String>> array,
            int size) {
        
        for (int index = 1; index <= size; index++) {
            
            if (number == index) {
                addCol("" + index, stye, array);
            } else {
                addCol(" ", stye, array);
                
            }
        }
        
    }
    
    /**
     * 转化数据
     *
     * @param topArray
     * @param allArray
     * @param array
     * @param size
     */
    public static void getDataArray(int[] topArray, int[] allArray,
            ArrayList<ArrayList<String>> array, int size) {
        
        Arrays.sort(topArray);
        Arrays.sort(allArray);
        int allLength = allArray.length;
        boolean[] isjion = new boolean[allLength];
        int[] aa = new int[allLength];
        for (int index = allLength - 1; index > 0; index--) {
            if (index == 0) {
                aa[index] = 20;
            } else {
                aa[index] = allArray[index] - allArray[index - 1];
            }
            Logger.v("TableView", "" + aa[index] + " " + allArray[index]);
        }
        for (int index = allLength - 1; index > 0; index--) {
            if (index != 0 && aa[index] == 1 && aa[index - 1] == 1) {
                isjion[index] = true;
                isjion[index - 1] = true;
                isjion[index - 2] = true;
            }
        }
        
        for (int index = 1; index <= size; index++) {
            
            int number = getInArray(index, allArray);
            if (number > -1) {
                
                if (getInArray(index, topArray) > -1) {
                    if (isjion[number]) {
                        addCol("" + index, 5, array);
                    } else {
                        addCol("" + index, 1, array);
                    }
                } else {
                    if (isjion[number]) {
                        addCol("" + index, 4, array);
                    } else {
                        addCol("" + index, 0, array);
                    }
                }
            } else {
                addCol(" ", 0, array);
                
            }
        }
        
    }
    
    /**
     * 转化数据
     *
     * @param topArray
     * @param allArray
     * @param array
     * @param size
     */
    public static void getDataArrayMajiang(int[] allArray, ArrayList<ArrayList<String>> array,
            int start, int size) {
        Arrays.sort(allArray);
        int allLength = allArray.length;
        boolean[] isjion = new boolean[allLength];
        int[] aa = new int[allLength];
        for (int index = allLength - 1; index > 0; index--) {
            if (index == 0) {
                aa[index] = 20;
            } else {
                aa[index] = allArray[index] - allArray[index - 1];
            }
            Logger.v("TableView", "" + aa[index] + " " + allArray[index]);
        }
        for (int index = allLength - 1; index > 0; index--) {
            if (index != 0 && aa[index] == 1 && aa[index - 1] == 1) {
                isjion[index] = true;
                isjion[index - 1] = true;
                isjion[index - 2] = true;
            }
        }
        size = start + size;
        for (int index = start; index < size; index++) {
            
            int number = getInArray(index, allArray);
            if (number > -1) {
                
                String text = majiangTitleArray[index - 21];
                if (isjion[number]) {
                    
                    addCol(text, 4, array);
                } else {
                    
                    addCol(text, 0, array);
                }
            } else {
                addCol(" ", 0, array);
                
            }
        }
        
    }
    
    /**
     * 转化数据
     *
     */
    public static void getDataArray(int[] topArray, ArrayList<ArrayList<String>> array, int size) {
        
        Arrays.sort(topArray);
        Logger.v("TableView", "==>  =======================================");
        
        for (int index = 1; index <= size; index++) {
            
            int number = getInArray(index, topArray);
            if (number > -1) {
                addCol("" + index, 2, array);
            } else {
                addCol(" ", 3, array);
                
            }
        }
        
    }
    
    /**
     * 转化数据
     *
     * @param topArray
     * @param allArray
     * @param array
     * @param size
     */
    public static void getDataArray2(String[] itemArray, ArrayList<ArrayList<String>> array,
            int size) {
        
        if (itemArray == null) {
            return;
        }
        int itemSize = itemArray.length;
        String[] newArray = new String[itemSize];
        int[] allArray = new int[itemSize];
        int count = 0;
        for (int index = 0; index < majiangTitleArray.length; index++) {
            String currentText = majiangTitleArray[index];
            for (int j = 0; j < itemSize; j++) {
                if (currentText.equals(itemArray[j])) {
                    newArray[count] = currentText;
                    allArray[count] = index + 1;
                    count++;
                    return;
                }
            }
        }
        
        boolean[] isjion = new boolean[itemSize];
        int[] aa = new int[itemSize];
        for (int index = itemSize - 1; index > 0; index--) {
            if (index == 0) {
                aa[index] = 20;
            } else {
                aa[index] = allArray[index] - allArray[index - 1];
            }
            Logger.v("TableView", "" + aa[index] + " " + allArray[index]);
        }
        for (int index = itemSize - 1; index > 0; index--) {
            if (index != 0 && aa[index] == 1 && aa[index - 1] == 1) {
                isjion[index] = true;
                isjion[index - 1] = true;
                isjion[index - 2] = true;
            }
        }
        
        for (int index = 0; index < majiangTitleArray.length; index++) {
            int number = getInArray(index, allArray);
            if (number > -1) {
                
                if (isjion[number]) {
                    addCol(majiangTitleArray[index], 5, array);
                } else {
                    addCol(majiangTitleArray[index], 1, array);
                }
            } else {
                addCol(" ", 0, array);
            }
        }
        
    }
    
    private static int getInArray(int number, int[] array) {
        int size = array.length;
        for (int index = 0; index < size; index++) {
            
            if (number == array[index]) {
                return index;
            }
        }
        return -1;
    }
    
    // ===================================================================
    public static TableTitle get115Table(Context context, int screenWidth) {
        ArrayList<ArrayList<ArrayList<String>>> titleList =
                new ArrayList<ArrayList<ArrayList<String>>>();
        ArrayList<ArrayList<ArrayList<String>>> data =
                new ArrayList<ArrayList<ArrayList<String>>>();
        ArrayList<ArrayList<String>> item;
        item = new ArrayList<ArrayList<String>>();
        // * title 1大字号 , 2 小字号 , 3 红色右侧线 ,4 黄色右侧线 , 5大号 红色线,6 小号红色线
        addCol("期号", 1, item);
        
        addCol("前三组", 3, item);
        addCol("前三组", 3, item);
        addCol("前三组", 3, item);
        int size = 11;
        for (int index = 0; index < size; index++) {
            if (index == size - 1) {
                addCol("中奖号码分布", 3, item);
            } else {
                addCol("中奖号码分布", 0, item);
            }
        }
        for (int index = 0; index < size; index++) {
            if (index == size - 1) {
                addCol("前三组分布", 3, item);
            } else {
                addCol("前三组分布", 0, item);
            }
        }
        addCol("跨度", 0, item);
        addCol("和数", 0, item);
        addCol("大小比", 2, item);
        addCol("奇偶比", 2, item);
        titleList.add(item);
        
        item = new ArrayList<ArrayList<String>>();
        
        addCol("期号", 1, item);
        
        addCol("1", 0, item);
        addCol("2", 0, item);
        addCol("3", 3, item);
        for (int index = 0; index < size; index++) {
            if (index == size - 1) {
                addCol("" + (index + 1), 3, item);
            } else {
                addCol("" + (index + 1), 0, item);
            }
            
        }
        for (int index = 0; index < size; index++) {
            if (index == size - 1) {
                addCol("" + (index + 1), 3, item);
            } else {
                addCol("" + (index + 1), 0, item);
            }
        }
        addCol("跨度", 0, item);
        addCol("和数", 0, item);
        addCol("大小比", 2, item);
        addCol("奇偶比", 6, item);
        titleList.add(item);
        
        TableTitle title = TableUtil.changeTitle(titleList);
        // title.toShow(title.getDataCol());
        
        ArrayList<ArrayList<String>> itemList = new ArrayList<ArrayList<String>>();
        
        addCol("8888", 0, itemList);// 1
        addCol("88", 2, itemList);// 2
        addCol("88", 2, itemList);// 3
        addCol("88", 2, itemList);// 4
        for (int index = 0; index < size; index++) {
            addCol("" + index + 1, 0, itemList);// 25
        }
        for (int index = 0; index < size; index++) {
            addCol("" + index + 1, 0, itemList);// 25
        }
        addCol("88", 3, itemList);// 25
        addCol("88", 3, itemList);// 26
        addCol("8:8", 3, itemList);// 27
        addCol("8:8", 3, itemList);// 28
        data.add(itemList);
        
        TableUtil.getTableTitleByWidth(title, data, context, screenWidth, 16);
        
        return title;
    }
    
    // /**
    // * 快乐十分 竖版 底部宽度换算
    // *
    // * @param list
    // * @return
    // */
    // public static ArrayList<Float> getBottomWidthForVer(ArrayList<Float>
    // list) {
    //
    // int size = list.size();
    // ArrayList<Float> newList = new ArrayList<Float>();
    // float topNumber = 0;
    // float bottomNumber = 0;
    // for (int index = 0; index < size; index++) {
    // float number = list.get(index);
    // if (index < 4) {
    // topNumber += number + 1;
    // if (index == 3) {
    // newList.add(topNumber);
    // }
    // } else if (index < size - 4) {
    // newList.add(number);
    // } else {
    // bottomNumber += number + 1;
    // if (index == size - 1) {
    // newList.add(bottomNumber);
    // }
    // }
    //
    // }
    // return newList;
    // }
    
    /**
     * 快乐十分 竖版 底部宽度换算
     *
     * @param list
     * @return
     */
    // public static ArrayList<Float> getBottomWidthForHar(ArrayList<Float>
    // list) {
    //
    // int size = list.size();
    // ArrayList<Float> newList = new ArrayList<Float>();
    // float topNumber = 0;
    // for (int index = 0; index < size; index++) {
    // float number = list.get(index);
    // if (index < 6) {
    // topNumber += number + 1;
    // if (index == 5) {
    // newList.add(topNumber - 2);
    // }
    // } else if (index == 17) {
    // topNumber = number + 1;
    // } else if (index == 18) {
    // topNumber += number;
    // newList.add(topNumber);
    // } else {
    // newList.add(number);
    // }
    //
    // }
    // return newList;
    // }
    
    public static ArrayList<Float> getBottomWidth(ArrayList<Float> list, int start, int twoStart,
            int twoEnd) {
        
        int size = list.size();
        ArrayList<Float> newList = new ArrayList<Float>();
        float topNumber = 0;
        for (int index = 0; index < size; index++) {
            float number = list.get(index);
            if (index < start) {
                topNumber += number + 1;
                if (index == start - 1) {
                    newList.add(topNumber - 2);
                }
            } else if (index == twoStart) {
                topNumber = number + 1;
            } else if (index > twoStart && index < twoEnd) {
                topNumber += number + 1;
            } else if (index == twoEnd) {
                topNumber += number;
                newList.add(topNumber);
            } else {
                newList.add(number);
            }
            
        }
        return newList;
    }
    
    // public static ArrayList<Float> getBottomWidthForMajiang(ArrayList<Float>
    // list) {
    //
    // int size = list.size();
    // ArrayList<Float> newList = new ArrayList<Float>();
    // float topNumber = 0;
    // for (int index = 0; index < size; index++) {
    // float number = list.get(index);
    // if (index < 4) {
    // topNumber += number + 1;
    // if (index == 3) {
    // newList.add(topNumber - 2);
    // }
    // } else if (index == 24) {
    // topNumber = number + 1;
    // } else if (index == 25) {
    // topNumber += number;
    // newList.add(topNumber);
    // } else {
    // newList.add(number);
    // }
    //
    // }
    // return newList;
    // }
    
    public static TableTitle get115TableHor(Context context, int screenWidth) {
        ArrayList<ArrayList<ArrayList<String>>> titleList =
                new ArrayList<ArrayList<ArrayList<String>>>();
        ArrayList<ArrayList<ArrayList<String>>> data =
                new ArrayList<ArrayList<ArrayList<String>>>();
        ArrayList<ArrayList<String>> item;
        item = new ArrayList<ArrayList<String>>();
        // * title 1大字号 , 2 小字号 , 3 红色右侧线 ,4 黄色右侧线 , 5大号 红色线,6 小号红色线 ,7
        // 蓝色,8极小,9极小 红
        addCol("期号", 6, item);
        
        addCol("一", 0, item);
        addCol("二", 0, item);
        addCol("三", 0, item);
        addCol("四", 0, item);
        addCol("五", 3, item);
        int size = 11;
        for (int index = 0; index < size; index++) {
            if (index == size - 1) {
                addCol("" + (index + 1), 3, item);
            } else {
                addCol("" + (index + 1), 0, item);
            }
        }
        addCol("跨度", 2, item);
        addCol("和数", 6, item);
        for (int index = 0; index < size; index++) {
            if (index == size - 1) {
                addCol("" + (index + 1), 3, item);
            } else {
                addCol("" + (index + 1), 0, item);
            }
        }
        for (int index = 0; index < size; index++) {
            if (index == size - 1) {
                addCol("" + (index + 1), 3, item);
            } else {
                addCol("" + (index + 1), 0, item);
            }
        }
        for (int index = 0; index < size; index++) {
            if (index == size - 1) {
                addCol("" + (index + 1), 3, item);
            } else {
                addCol("" + (index + 1), 0, item);
            }
        }
        addCol("跨度", 2, item);
        addCol("和数", 6, item);
        titleList.add(item);
        
        TableTitle title = TableUtil.changeTitle(titleList);
        // title.toShow(title.getDataCol());
        
        ArrayList<ArrayList<String>> itemList = new ArrayList<ArrayList<String>>();
        
        addCol("8888", 0, itemList);// 1
        addCol("00", 0, itemList);// 2
        addCol("00", 0, itemList);// 3
        addCol("00", 0, itemList);// 4
        addCol("00", 0, itemList);// 4
        addCol("00", 0, itemList);// 4
        for (int index = 0; index < size; index++) {
            addCol("" + index + 1, 0, itemList);// 25
        }
        addCol("88", 0, itemList);// 25
        addCol("88", 0, itemList);// 26
        for (int index = 0; index < size; index++) {
            addCol("" + index + 1, 3, itemList);// 25
        }
        for (int index = 0; index < size; index++) {
            addCol("" + index + 1, 0, itemList);// 25
        }
        for (int index = 0; index < size; index++) {
            addCol("" + index + 1, 3, itemList);// 25
        }
        addCol("88", 0, itemList);// 25
        addCol("88", 0, itemList);// 26
        data.add(itemList);
        
        TableUtil.getTableTitleByWidth(title, data, context, screenWidth, 16);
        
        return title;
    }
    
    public static TableTitle getMajiangTableHor(Context context, int screenWidth) {
        ArrayList<ArrayList<ArrayList<String>>> titleList =
                new ArrayList<ArrayList<ArrayList<String>>>();
        ArrayList<ArrayList<ArrayList<String>>> data =
                new ArrayList<ArrayList<ArrayList<String>>>();
        ArrayList<ArrayList<String>> item;
        item = new ArrayList<ArrayList<String>>();
        // title 1大字号 , 2 小字号 , 3 红色右侧线 ,4 黄色右侧线 , 5大号 红色线,6 小号红色线 ,7 蓝色,8极小,9极小
        // 红
        addCol("期号", 5, item);
        
        addCol("前", 7, item);
        addCol("三", 7, item);
        addCol("组", 3, item);
        int size = 20;
        for (int index = 0; index < size; index++) {
            if (index == size - 1) {
                addCol("" + (index + 1), 3, item);
            } else if (index == 9) {
                addCol("" + (index + 1), 4, item);
            } else {
                addCol("" + (index + 1), 0, item);
            }
        }
        addCol("大小比", 9, item);
        addCol("奇偶比", 9, item);
        for (int index = 0; index < majiangTitleArray.length; index++) {
            
            if (index == size - 1) {
                addCol(majiangTitleArray[index], 3, item);
            } else if (index == 9) {
                addCol(majiangTitleArray[index], 4, item);
            } else {
                addCol(majiangTitleArray[index], 0, item);
            }
        }
        
        titleList.add(item);
        
        TableTitle title = TableUtil.changeTitle(titleList);
        // title.toShow(title.getDataCol());
        
        ArrayList<ArrayList<String>> itemList = new ArrayList<ArrayList<String>>();
        
        addCol("888888", 0, itemList);
        
        addCol("00", 0, itemList);
        addCol("00", 0, itemList);
        addCol("00", 0, itemList);
        for (int index = 0; index < size; index++) {
            addCol("" + (index + 1), 0, itemList);
        }
        addCol("8:8", 2, itemList);
        addCol("8:8", 2, itemList);
        for (int index = 0; index < size; index++) {
            addCol(majiangTitleArray[index], 0, itemList);
        }
        
        data.add(itemList);
        
        TableUtil.getTableTitleByWidth(title, data, context, screenWidth, 16);
        
        return title;
    }
    
    public static final int[] redLine11_5var = {1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
            0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1};
    public static final int[] redL11_5var_bo =
            {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
    
    public static final int[] redLine11_5har =
            {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1};
    public static final int[] redL11_5har_bo =
            {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
                    0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1};
    public static final int[] redLine_majiang = {1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
            0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
    public static final int[] redL_majiang_bo = {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
            0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
    public static final int[] redLine_happyTen =
            {1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1};
    public static final int[] redL_happyTen_bo =
            {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1};
    
}
